/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Marcel
 */
public class PassageirosHora {
    // 12 meses, 30 dias e 24 horas
    private int[][][] matriz = new int[12][30][24];

    public void adiciona(int dia, int mes, int hora){
        if (mes > 0 && mes < 13 &&
            dia > 0 && dia < 31 &&
            hora >=0 && hora < 24)
            matriz[mes-1][dia-1][hora]++;
    }

    public int quantosPassageiros(int dia, int mes){
        dia--;
        mes--; // adequar do natural ao tecnológico
        int total = 0;

        for (int h=0; h < matriz[mes][dia].length; h++){
            total += matriz[mes][dia][h];
        }

        return total;
    }

    public int mesMenorFluxo() {
        int mesMenor = 1;
        int qtdeMenor = this.quantosPassageiros(1);
        int qtde;

        for (int m=2; m < 13; m++){
            qtde = this.quantosPassageiros(m);
            if (qtde < qtdeMenor){
                qtdeMenor = qtde;
                mesMenor = m;
            }
        }
        return mesMenor;
    }

    public int quantosPassageiros(int mes){
        int total = 0;

        for (int d = 1; d < 31; d++){
            total += this.quantosPassageiros(d,mes);
        }

        return total;
    }

    public int[] picoTransporte(){
        int diaM=-1;
        int mesM=-1;
        int horM=-1;
        int qtdM=Integer.MIN_VALUE;

        for (int m=0; m < matriz.length; m++){
            for (int d=0; d < matriz[m].length; d++){
                for (int h=0; h < matriz[m][d].length; h++){
                    if (matriz[m][d][h] > qtdM){
                        mesM = m;
                        diaM = d;
                        horM = h;
                        qtdM = matriz[m][d][h];
                    }
                }
            }
        }

        int[] retorno = new int[4];
        retorno[0] = diaM+1;
        retorno[1] = mesM+1; // adequar do tecnológico para natural
        retorno[2] = horM;
        retorno[3] = qtdM;
        return retorno;
    }
}
